# a szokásos rutinok betöltése
%pylab inline
from scipy.integrate import * # az integráló rutinok betöltése
import matplotlib.pyplot as plt
from IPython.core.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit"
value="Click here to toggle on/off the raw code."></form>''')
heaviside = lambda x: 0.5 if x == 0 else 0 if x < 0 else 1
def egyenes(pontok,gamma):
a=pontok[0]
b=pontok[1]
e= b - a
q = lambda t: 1/(gamma-1)*(gamma * (a[1]+e[1] * t)*e[0] + (a[0]+e[0] * t)*e[1])
w = lambda t: (a[1]+e[1] * t)*e[0]
qplusz = lambda t: q(t) * heaviside(q(t))
munka = quad(w,0,1)
Qfel = quad(qplusz,0,1)
Qtot = quad(q,0,1)
figsize(6,6)
vonalv = 4.0 # vonal vastagsag
dashv = '--' # '-' -> solid, '--' -> szaggatott
if a[1] == b[1] :
if a[0] > b[0]:
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='b', ls=dashv,linewidth=vonalv)
elif a[0] < b[0]:
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='r', ls='-',linewidth=vonalv)
elif a[0] == b[0] :
if a[1] > b[1]:
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='b', ls=dashv,linewidth=vonalv)
elif a[1] < b[1]:
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='r', ls='-',linewidth=vonalv)
else :
t0 = -(gamma * a[1] *e[0]+a[0]* e[1])/((gamma +1)*(e[0]*e[1]))
V0 = a[0] + e[0] * t0
p0 = a[1] + e[1] * t0
#V00 = gamma/(gamma+1) * (a[0]* b[1]-a[1]* b[0])/(b[1]-a[1])
#p00 = (a[1]* b[0]-a[0]* b[1])/(gamma +1)/(b[0]-a[0])
if t0 < 0 or t0 > 1 :
if q(0) < 0 :
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='b', ls=dashv,linewidth=vonalv)
elif q(0) > 0 :
x = [a[0],b[0]]
y = [a[1],b[1]]
plot(x,y,color='r', ls='-',linewidth=vonalv)
else :
if q(0) < 0 :
xblue = [a[0],V0]
yblue = [a[1],p0]
xred = [V0,b[0]]
yred = [p0,b[1]]
plot(xblue,yblue,color='b', ls=dashv,linewidth=vonalv)
plot(xred,yred,color='r', ls='-',linewidth=vonalv)
else:
xred = [a[0],V0]
yred = [a[1],p0]
xblue = [V0,b[0]]
yblue = [p0,b[1]]
plot(xblue,yblue,color='b', ls=dashv,linewidth=vonalv)
plot(xred,yred,color='r', ls='-',linewidth=vonalv)
xlabel('V',fontsize=20)
ylabel('p',fontsize=20)
return (munka,Qfel,Qtot)
def sokszog(sarkok,gamma):
nsarok = len(sarkok)
res=[]
for i in range(0,nsarok-1):
res.append(egyenes([sarkok[i],sarkok[i+1]],gamma))
res.append(egyenes([sarkok[nsarok-1],sarkok[0]],gamma))
xx = []
yy = []
for i in range(0,len(sarkok)):
xx.append(sarkok[i][0])
yy.append(sarkok[i][1])
xlim(0,1.2 * max(xx))
ylim(0,1.2 * max(yy))
munka = sum(array(res)[:,0,0])
Qfel = sum(array(res)[:,1,0])
Qtot = sum(array(res)[:,2,0])
return(munka/Qfel,munka,Qfel,Qtot-munka)
($\gamma = \frac{c_p}{c_V} = 5/3$)
A p-V síkon a körfolyamatban a piros (folytonos) vonal hőfelvételt, a kék (szaggatott) vonal hőleadást jelent.
sarkok=[array([1, 3]),array([3,2]),array([2,1])]
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok=[array([1, 2]),array([2,3]),array([3,2])]
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok=[array([1, 2]),array([3,2]),array([2,1])]
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok=[array([1, 2]),array([3,2]),array([3,1])]
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
sarkok= [array([1,2]),array([3,2]),array([3,1]),array([1,1])]
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
nsarok = 4
gamma=5/3
x0=3/2
y0=3/2
sarkok = []
for i in range(0,nsarok) :
sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
nsarok = 5
gamma=5/3
x0=3/2
y0=3/2
sarkok = []
for i in range(0,nsarok) :
sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
nsarok = 6
gamma=5/3
x0=3/2
y0=3/2
sarkok = []
for i in range(0,nsarok) :
sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
nsarok = 17
gamma=5/3
x0=1
y0=1
sarkok = []
for i in range(0,nsarok) :
sarkok.append(array([x0+cos(i*2*pi/nsarok),y0 -sin(i*2*pi/nsarok)]))
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
# otagu csillag alaku korfolyamat
nc = 5
gamma=5/3
x0 = 1.25
y0 = 1.25
fi0 = 0* pi/2
rr = sin(pi/10)/sin(54*pi/180)
sarkok1 = []
sarkok2 = []
for i in range(0,nc) :
sarkok1.append(array([x0 + cos(fi0 + pi/2-i*2*pi/nc),y0 + sin(fi0 + pi/2-i*2*pi/nc)]))
for i in range(0,nc):
sarkok2.append(array([x0 + rr*cos(fi0 - 36*pi/180+pi/2-i*2*pi/nc),y0 + rr*sin(fi0 - 36*pi/180+pi/2-i*2*pi/nc)]))
sarkok = []
for i in range(0,nc):
sarkok.append(array(sarkok1[i]))
sarkok.append(array(sarkok2[i]))
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])
from random import randint
print(uniform(2,10))
nd=5
rmin=1
rmax=10
sarkok = []
for i in range(0,nd):
sarkok.append(array([uniform(rmin,rmax),uniform(rmin,rmax)]))
gamma=5/3
print ('sarkok koordinátái: ',sarkok)
print()
#print(len(sarkok))
res = sokszog(sarkok,gamma)
print('hatásfok = ',"%.4f" % res[0])
print('W = ',"%.3f" % res[1])
print('Qfel = ',"%.3f" % res[2])
print('check: Qfel- Qle-W = ',"%.7f" % res[3])